package com.ruoyi.course.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 课程对象 course
 *
 * @author Weiney
 * @date 2025-02-24
 */
public class Course extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 课程ID */
    @Excel(name = "课程ID")
    private Long courseId;

    /** 课程名称 */
    @Excel(name = "课程名称")
    private String courseName;

    /** 课程描述：上课时间，课程信息等 */
    @Excel(name = "课程描述")
    private String courseDescription;

    /** 课程星期（周几上课） */
    @Excel(name = "课程星期", readConverterExp = "0=周一,1=周二,2=周三,3=周四,4=周五,5=周六,6=周日")
    private Long courseWeek;

    /** 课程节数（第几节上课） */
    @Excel(name = "课程节数", readConverterExp = "0=1-2节,1=3-4节,2=5-6节,3=7-8节,4=9-10节")
    private Long courseSequence;

    /** 课程学分 */
    @Excel(name = "课程学分", readConverterExp = "1=1学分,2=2学分,3=3学分,4=4学分,5=5学分")
    private Long courseCredit;

    /** 课程学时 */
    @Excel(name = "课程学时", readConverterExp = "1=16学时,2=32学时,3=48学时")
    private Long courseHours;

    /** 教师ID */
    private Long userId;

    /** 部门ID */
    private Long deptId;

    /** 课程类型：必修课、选修课、公共课 */
    @Excel(name = "课程类型", readConverterExp = "1=必修课,2=选修课,3=公共课")
    private Long courseType;

    /** 课程教室 */
    @Excel(name = "课程教室")
    private String classroom;

    /** 课程开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "课程开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startDate;

    /** 课程结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "课程结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endDate;

    /** 课程状态（0：开课，1：结课） */
    @Excel(name = "课程状态", readConverterExp = "0=已开课,1=已结课")
    private String status;

    public void setCourseId(Long courseId)
    {
        this.courseId = courseId;
    }

    public Long getCourseId()
    {
        return courseId;
    }
    public void setCourseName(String courseName)
    {
        this.courseName = courseName;
    }

    public String getCourseName()
    {
        return courseName;
    }
    public void setCourseDescription(String courseDescription)
    {
        this.courseDescription = courseDescription;
    }

    public String getCourseDescription()
    {
        return courseDescription;
    }
    public void setCourseWeek(Long courseWeek)
    {
        this.courseWeek = courseWeek;
    }

    public Long getCourseWeek()
    {
        return courseWeek;
    }
    public void setCourseSequence(Long courseSequence)
    {
        this.courseSequence = courseSequence;
    }

    public Long getCourseSequence()
    {
        return courseSequence;
    }
    public void setCourseCredit(Long courseCredit)
    {
        this.courseCredit = courseCredit;
    }

    public Long getCourseCredit()
    {
        return courseCredit;
    }
    public void setCourseHours(Long courseHours)
    {
        this.courseHours = courseHours;
    }

    public Long getCourseHours()
    {
        return courseHours;
    }
    public void setUserId(Long userId)
    {
        this.userId = userId;
    }

    public Long getUserId()
    {
        return userId;
    }
    public void setDeptId(Long deptId)
    {
        this.deptId = deptId;
    }

    public Long getDeptId()
    {
        return deptId;
    }
    public void setCourseType(Long courseType)
    {
        this.courseType = courseType;
    }

    public Long getCourseType()
    {
        return courseType;
    }
    public void setClassroom(String classroom)
    {
        this.classroom = classroom;
    }

    public String getClassroom()
    {
        return classroom;
    }
    public void setStartDate(Date startDate)
    {
        this.startDate = startDate;
    }

    public Date getStartDate()
    {
        return startDate;
    }
    public void setEndDate(Date endDate)
    {
        this.endDate = endDate;
    }

    public Date getEndDate()
    {
        return endDate;
    }
    public void setStatus(String status)
    {
        this.status = status;
    }

    public String getStatus()
    {
        return status;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("courseId", getCourseId())
                .append("courseName", getCourseName())
                .append("courseDescription", getCourseDescription())
                .append("courseWeek", getCourseWeek())
                .append("courseSequence", getCourseSequence())
                .append("courseCredit", getCourseCredit())
                .append("courseHours", getCourseHours())
                .append("userId", getUserId())
                .append("deptId", getDeptId())
                .append("courseType", getCourseType())
                .append("classroom", getClassroom())
                .append("startDate", getStartDate())
                .append("endDate", getEndDate())
                .append("status", getStatus())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .toString();
    }
}
